//
// Created by Jisam on 12/10/2024 14:14.
// Solution of P1091 合唱队形
// 2024-10-12 14:34:40 AC 100 LIS
#include <bits/stdc++.h>

#define  int long long
#define  endl "\n"
#define  all(x) (x).begin(),(x).end()
#define  pb push_back
using namespace std;

signed main() {
    // 关闭cin与cout的同步，并解除cin的tie
    cin.tie(nullptr)->sync_with_stdio(false);
    // 读取合唱队人数
    int n;
    cin >> n;
    // 初始化三个数组，大小为n+1，用于存储中间结果
    vector<int> a(n + 1), g(n + 1), f(n + 1);
    // 读取每个人的身高
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    // 动态规划求解以a[i]结尾的最长递增子序列的长度
    for (int i = 1; i <= n; i++) {
        f[i] = 1; // 初始化长度为1
        for (int j = 1; j < i; j++) {
            // 如果a[i]比a[j]大，更新f[i]
            if (a[i] > a[j]) f[i] = max(f[i], f[j] + 1);
        }
    }
    // 动态规划求解以a[i]开头的最长递减子序列的长度
    for (int i = 1; i <= n; i++) {
        g[i] = 1; // 初始化长度为1
        for (int j = 1; j < i; j++) {
            // 如果a[i]比a[j]小，更新g[i]
            if (a[i] < a[j]) g[i] = max(g[i], max(g[j], f[j]) + 1);
        }
    }
    // 初始化答案为0
    int ans = 0;
    // 遍历数组，找出最长的递增或递减子序列的长度
    for(int i = 1 ; i <= n ; i ++)
    {
        ans = max(ans, max(f[i],g[i]));
    }
    // 输出不能站在队形中的人数
    cout << n - ans;
    return 0;
}